//
//  RSShowStarView.h
//  RSStarRating
//
//  Created by thinkjoy on 16/8/24.
//  Copyright © 2016年 thinkjoy. All rights reserved.
//

#import <UIKit/UIKit.h>

/**
 *  滑动或点击scoreView的回调Block
 *
 *  @param score 分数
 */
typedef void(^starScoreViewBlock)(CGFloat score);


/**
 *  星星的绘制方式,默认为整个的 则根据score对应的百分比填充
 */
typedef NS_ENUM(NSInteger, RSShowStarDrawStyle) {
    /**
     *  只有完整的星星,全部填充
     */
    RSShowStarDrawStyleComplete = 0,
    /**
     *  完整的和一半的,显示一半填充或者全部填充
     */
    RSShowStarDrawStyleCompleteAndHalf  =   1,
    /**
     *  自由的
     */
    RSShowStarDrawStyleFree =   2,
};


/**
 *  RSShowStarView的样式 ,默认是读
 */
typedef NS_ENUM(NSInteger, RSShowStarStyle) {
    /**
     *  只读的样式,点击和滑动无效
     */
    RSShowStarStyleReadonly = 0,
    /**
     *  写,允许用户手动进行滑动改变score的值
     */
    RSShowStarStyleReadAndWrite =   1,
};

/**
 *  对齐方式，默认两端对齐
 */
typedef NS_ENUM(NSInteger, RSShowStarAlignment) {
    /**
     *  两端对齐
     */
    RSShowStarAlignmentJustified     = 0,
    /**
     *  左对齐
     */
    RSShowStarAlignmentLeft =   1,
    /**
     *  居中
     */
    RSShowStarAlignmentCenter   =   2,
    /**
     *  右对齐
     */
    RSShowStarAlignmentRight    =   3
};

@interface RSShowStarView : UIControl

- (instancetype)init __attribute__((unavailable("init not available, call initWithFrame:starCount:defaultScore: instead")));
- (instancetype)initWithFrame:(CGRect)frame __attribute__((unavailable("initWithFrame: not available, call initWithFrame:starCount:defaultScore: instead")));
/**
 创建一个只读、居中对齐、间距和边距都为5、显示完整星星、星星大小为当前视图高度的控件
 
 @param frame 如当前控件过小，放不下对应的星星数量时，Debug模式会报错
 @param starCount 星星个数
 @param defaultScore 点亮星星数量
 @return return
 */
- (instancetype)initWithFrame:(CGRect)frame
                    starCount:(NSInteger)starCount
                 defaultScore:(CGFloat)defaultScore;

/**
 <#Description#>
 
 @param frame <#frame description#>
 @param showStarStyle RSShowStarView的样式 ,默认是读
 @param starAlignment 对齐方式，默认两端对齐
 @param showStarDrawStyle 星星的绘制方式,默认为整个的 则根据score对应的百分比填充
 @param starCount 个数
 @param space 间距
 @param starMargin 左右边距,默认为5
 @param starFont 星星的大小
 @return <#return value description#>
 */
- (instancetype)initWithFrame:(CGRect)frame
                showStarStyle:(RSShowStarStyle)showStarStyle
                starAlignment:(RSShowStarAlignment)starAlignment
            showStarDrawStyle:(RSShowStarDrawStyle)showStarDrawStyle
                    starCount:(NSInteger)starCount
                 defaultScore:(CGFloat)defaultScore
                    starSpace:(CGFloat)space
                   starMargin:(CGFloat)starMargin
                     starFont:(CGFloat)starFont;


/**
 *  改变score的值的回调block
 */
@property (nonatomic, copy) starScoreViewBlock scoreBlock;

/**星星总数*/
@property   (nonatomic,assign,readonly) IBInspectable  NSInteger   starCount;

/** 填充的percent 默认为0 */
@property (nonatomic, assign) IBInspectable CGFloat defaultScore;

/**
 *  星星的绘制方式,默认为整个的
 */
@property   (nonatomic,assign)  RSShowStarDrawStyle  showStarDrawStyle;

/**
 *  RSShowStarView的样式 ,默认是读
 */
@property   (nonatomic,assign)  RSShowStarStyle  showStarStyle;

/**
 对齐方式，默认两端对齐
 */
@property   (nonatomic,assign)  RSShowStarAlignment  starAlignment;



/**
 *  填充颜色 默认橙色
 */
@property (nonatomic, strong) UIColor *fillColor;
/**
 *  线条颜色 默认是灰色
 */
@property (nonatomic, strong) UIColor *lineColor;

/**
 *  边框线的宽度 默认1
 */
@property (nonatomic, assign) CGFloat lineWidth;

@end
